// 1898. [模拟查表法]遥控小车 https://oj.rnd.huawei.com/problems/1898/details
// 经典迷宫方块地图
//假设在平面直角坐标系.上北-Y轴正方向，下南-Y轴负方向，左西-X轴负方向，右东-X轴正方向,
//一个遥控小车最初位于原点 (0, 0)
//处，且面朝北方。遥控小车可以接受下列三条指令之一： “G”：直走 1 单位，“L”：左转
// 90 度，“R”：右转 90 度
//给定一批指令，遥控小车按顺序执行每个指令后，请计算遥控小车最终所处的位置。
//用例保证整个过程中坐标(x,y)的值都在 int (32 位系统)范围内
//输入 字符串表示的一批遥控指令，仅由字符 G、L、R组成，长度范围[1,100]
//输出 小车最终所处位置的坐标
//输入 GG
//输出 (0,2)

#include <bits/stdc++.h>
using namespace std;

struct Coordinate {
  int x = 0, y = 0;
  Coordinate& operator+=(const Coordinate& other) {
    x += other.x;
    y += other.y;
    return *this;
  }
};
class Solution {
  //                                 up    left   down   right
  const vector<Coordinate> dirs_ = {{0, 1},
                                    {-1, 0},
                                    {
                                        0,
                                        -1,
                                    },
                                    {1, 0}};
  enum { eUP = 0, eLEFT, eDOWN, eRIGHT };

 public:
  // 待实现函数，在此函数中填入答题代码;
  string ExecCommand(const string& commands) {
    const static size_t nMaxDir = dirs_.size();
    size_t nCurDir = eUP;
    Coordinate curPos = {0, 0};
    for (auto cmd : commands) {
      if (cmd == 'L') {  // 只修改方向
        nCurDir = (nCurDir + 1) % nMaxDir;
      } else if (cmd == 'R') {  // 只修改方向
        nCurDir = (nCurDir - 1 + nMaxDir) % nMaxDir;
      } else if (cmd == 'G') {
        curPos += dirs_[nCurDir];
      }
    }
    string result = "(" + to_string(curPos.x) + "," + to_string(curPos.y) + ")";
    return result;
  }
};
inline string ReadLine() {
  string line;
  getline(cin, line);
  return line;
}
int main() {
  string commands = ReadLine();
  Solution solu;
  string result = solu.ExecCommand(commands);
  cout << result;
  return 0;
}
